package com.yhsoft.buyer.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 订单
 * </p>
 *
 * @author yyyyyyyh
 * @since 2023-09-26
 */
@TableName("buyer_order")
@Data
public class BuyerOrder implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 订单ID
     */
    @ApiModelProperty("订单ID")
    @TableId(value = "order_id", type = IdType.AUTO)
    private String orderId;

    /**
     * 订单类型，CAKE-蛋糕 DZQ-电子券 SP-普通商品，DY-电影票
     */
    @ApiModelProperty("订单类型，CAKE-蛋糕 DZQ-电子券 SP-普通商品，DY-电影票")
    private String orderType;

    /**
     * 商品类型
     */
    @ApiModelProperty("商品类型：1-电影，2-蛋糕，3-电子券，4-api电商，5-线下供应商")
    private Integer goodsType;

    /**
     * 渠道商ID
     */
    @ApiModelProperty("渠道商ID")
    private Integer distributorId;

    /**
     * 供应商ID
     */
    private Integer vendorId;

    /**
     * 用户ID
     */
    @ApiModelProperty("用户ID")
    private String userId;

    /**
     * 购物车ID
     */
    @ApiModelProperty("购物车ID")
    private Integer cartId;

    /**
     * 地址ID
     */
    @ApiModelProperty("地址ID")
    private Integer addressId;

    /**
     * 福利卡ID
     */
    @ApiModelProperty("福利卡ID")
    private String cardId;

    /**
     * 添加购物车时的商品原价
     */
    private BigDecimal totalOriginalPrice;

    /**
     * 添加购物车时的渠道商进货价
     */
    private BigDecimal totalSalerPrice;

    /**
     * 总金额
     */
    @ApiModelProperty("总金额")
    private BigDecimal totalPrice;

    /**
     * 福利卡金额
     */
    @ApiModelProperty("福利卡金额")
    private BigDecimal cardPrice;

    /**
     * 应付金额
     */
    @ApiModelProperty("现金应付金额")
    private BigDecimal payablePrice;

    /**
     * 支付方式
     */
    @ApiModelProperty("支付方式  1-福利卡支付 2-微信支付 3-混合支付")
    private String payMethod;

    /**
     * 开票设置ID
     */
    @ApiModelProperty("开票设置ID")
    private String invoiceTplId;

    /**
     * 订单留言备注
     */
    @ApiModelProperty("订单留言备注")
    private String leaveComment;

    /**
     * 订单状态
     */
    @ApiModelProperty("订单状态 0-已完成 1-待支付 2-待发货 3-待收货 4-已取消 5-支付中 6-支付失败 7-已退款 8-退款失败 9-退款中")
    private Integer orderStatus;

    /**
     * 快递单号
     */
    @ApiModelProperty("快递单号")
    private String expressNo;

    /**
     * 快递公司
     */
    @ApiModelProperty("快递公司")
    private String expressCompany;

    /**
     * 电影票信息
     */
    @ApiModelProperty("电影票信息")
    private String flimInfo;

    /**
     * 海报,影片等资源API
     */
    @ApiModelProperty(value = "海报,影片等资源API")
    private String poster;

    /**
     * 取票码
     */
    @ApiModelProperty("取票码")
    private String flimTicketInfo;

    /**
     * 交易流水号
     */
    @ApiModelProperty(value = "交易流水号")
    private String tradeNo;

    /**
     * 退款流水号
     */
    @ApiModelProperty(value = "退款流水号")
    private String refundNo;

    /**
     * 发货时间
     */
    @ApiModelProperty("发货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime expressTime;

    @ApiModelProperty("订单完成时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime endTime;

    @ApiModelProperty("支付完成时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime payTime;

    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private String createdBy;

    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updatedTime;

    @ApiModelProperty("逻辑删除 0:未删除 1：已删除")
    @TableField(fill = FieldFill.INSERT)
    private Integer deleted;

    /**
     * 利润额
     */
    @ApiModelProperty("利润额")
    private BigDecimal margin;

    /**
     * 成本价
     */
    @ApiModelProperty("成本价")
    private BigDecimal cost;

}
